package seueniumfordemoiselle.seleniumsimplify.pages;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.CacheLookup;
import org.openqa.selenium.support.FindBy;

/**
 * @author rogerio
 * 
 * Classe abstrata que cont�m os elementos comuns a todas as p�ginas da aplica��o
 *
 */
public abstract class BasePage {
	
	WebDriver driver;
	
	@FindBy(xpath="//a[contains(text(),'Bairro')]")
	@CacheLookup
	WebElement menuBairro;
	
	@FindBy(xpath="//a[contains(text(),'Município')]")
	@CacheLookup
	WebElement menuMunicipio;
	
	@FindBy(xpath="//a[contains(text(),'UF')]")
	@CacheLookup
	WebElement menuUF;
	
	@FindBy(xpath="//a[contains(text(),'País')]")
	@CacheLookup
	WebElement menuPais;
	
	@FindBy(xpath="//a[contains(text(),'Continente')]")
	@CacheLookup
	WebElement menuContinente;
	
	@FindBy(xpath="//a[contains(text(),'Planeta')]")
	@CacheLookup
	WebElement menuPlaneta;
	
	@FindBy(xpath="//a[contains(text(),'Pessoa')]")
	@CacheLookup
	WebElement menuPessoa;

	public BasePage(WebDriver driver) {
		this.driver = driver;
	}
	
	/**
	 * Abre a página inicial da aplicação
	 */
	public BasePage open(){
		driver.get("http://localhost:8080/simplify");				
		return new InicialPage(this.driver);
	}
	
	/**
	 * Fecha o browser
	 */
	public void close(){
		driver.close();
	}
	
	public WebDriver getDriver() {
		return driver;
	}

	public void setDriver(WebDriver driver) {
		this.driver = driver;
	}

	/**
	 * Representa a seleção do menu Bairro
	 */
	public void clicarMenuBairro(){
		this.menuBairro.click();
	}
	/**
	 * Representa a seleçãoo do menu Município
	 */
	public void clicarMenuMunicipio(){
		this.menuMunicipio.click();
	}
	/**
	 * Representa a seleção do menu UF
	 */
	public UFListPage clicarMenuUF(){
		this.menuUF.click();
		return new UFListPage(this.driver);
	}
	/**
	 * Representa a seleção do menu País
	 */
	public void clicarMenuPais(){
		this.menuPais.click();
	}
	/**
	 * Representa a seleção do menu Continente
	 */
	public void clicarMenuContinente(){
		this.menuContinente.click();
	}
	/**
	 * Representa a seleção do menu Planeta
	 */
	public void clicarMenuPlaneta(){
		this.menuPlaneta.click();
	}
	/**
	 * Representa a seleção do menu Pessoa
	 */
	public void clicarMenuPessoa(){
		this.menuPessoa.click();
	}

	public WebElement getMenuBairro() {
		return menuBairro;
	}

	public void setMenuBairro(WebElement menuBairro) {
		this.menuBairro = menuBairro;
	}

	public WebElement getMenuMunicipio() {
		return menuMunicipio;
	}

	public void setMenuMunicipio(WebElement menuMunicipio) {
		this.menuMunicipio = menuMunicipio;
	}

	public WebElement getMenuUF() {
		return menuUF;
	}

	public void setMenuUF(WebElement menuUF) {
		this.menuUF = menuUF;
	}

	public WebElement getMenuPais() {
		return menuPais;
	}

	public void setMenuPais(WebElement menuPais) {
		this.menuPais = menuPais;
	}

	public WebElement getMenuContinente() {
		return menuContinente;
	}

	public void setMenuContinente(WebElement menuContinente) {
		this.menuContinente = menuContinente;
	}

	public WebElement getMenuPlaneta() {
		return menuPlaneta;
	}

	public void setMenuPlaneta(WebElement menuPlaneta) {
		this.menuPlaneta = menuPlaneta;
	}

	public WebElement getMenuPessoa() {
		return menuPessoa;
	}

	public void setMenuPessoa(WebElement menuPessoa) {
		this.menuPessoa = menuPessoa;
	}
	
}
